lt2(0, s1(X)) -> true
lt2(s1(X), 0) -> false
lt2(s1(X), s1(Y)) -> lt2(X, Y)
append2(nil, Y) -> Y
append2(add2(N, X), Y) -> add2(N, append2(X, Y))
split2(N, nil) -> pair2(nil, nil)
split2(N, add2(M, Y)) -> f_14(split2(N, Y), N, M, Y)
f_14(pair2(X, Z), N, M, Y) -> f_26(lt2(N, M), N, M, Y, X, Z)
f_26(true, N, M, Y, X, Z) -> pair2(X, add2(M, Z))
f_26(false, N, M, Y, X, Z) -> pair2(add2(M, X), Z)
qsort1(nil) -> nil
qsort1(add2(N, X)) -> f_33(split2(N, X), N, X)
f_33(pair2(Y, Z), N, X) -> append2(qsort1(Y), add2(X, qsort1(Z)))
↳ QTRS
↳ DependencyPairsProof
lt2(0, s1(X)) -> true
lt2(s1(X), 0) -> false
lt2(s1(X), s1(Y)) -> lt2(X, Y)
append2(nil, Y) -> Y
append2(add2(N, X), Y) -> add2(N, append2(X, Y))
split2(N, nil) -> pair2(nil, nil)
split2(N, add2(M, Y)) -> f_14(split2(N, Y), N, M, Y)
f_14(pair2(X, Z), N, M, Y) -> f_26(lt2(N, M), N, M, Y, X, Z)
f_26(true, N, M, Y, X, Z) -> pair2(X, add2(M, Z))
f_26(false, N, M, Y, X, Z) -> pair2(add2(M, X), Z)
qsort1(nil) -> nil
qsort1(add2(N, X)) -> f_33(split2(N, X), N, X)
f_33(pair2(Y, Z), N, X) -> append2(qsort1(Y), add2(X, qsort1(Z)))
F_33(pair2(Y, Z), N, X) -> QSORT1(Y)
F_33(pair2(Y, Z), N, X) -> APPEND2(qsort1(Y), add2(X, qsort1(Z)))
F_14(pair2(X, Z), N, M, Y) -> F_26(lt2(N, M), N, M, Y, X, Z)
F_14(pair2(X, Z), N, M, Y) -> LT2(N, M)
QSORT1(add2(N, X)) -> F_33(split2(N, X), N, X)
LT2(s1(X), s1(Y)) -> LT2(X, Y)
SPLIT2(N, add2(M, Y)) -> F_14(split2(N, Y), N, M, Y)
APPEND2(add2(N, X), Y) -> APPEND2(X, Y)
F_33(pair2(Y, Z), N, X) -> QSORT1(Z)
QSORT1(add2(N, X)) -> SPLIT2(N, X)
SPLIT2(N, add2(M, Y)) -> SPLIT2(N, Y)
lt2(0, s1(X)) -> true
lt2(s1(X), 0) -> false
lt2(s1(X), s1(Y)) -> lt2(X, Y)
append2(nil, Y) -> Y
append2(add2(N, X), Y) -> add2(N, append2(X, Y))
split2(N, nil) -> pair2(nil, nil)
split2(N, add2(M, Y)) -> f_14(split2(N, Y), N, M, Y)
f_14(pair2(X, Z), N, M, Y) -> f_26(lt2(N, M), N, M, Y, X, Z)
f_26(true, N, M, Y, X, Z) -> pair2(X, add2(M, Z))
f_26(false, N, M, Y, X, Z) -> pair2(add2(M, X), Z)
qsort1(nil) -> nil
qsort1(add2(N, X)) -> f_33(split2(N, X), N, X)
f_33(pair2(Y, Z), N, X) -> append2(qsort1(Y), add2(X, qsort1(Z)))
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
F_33(pair2(Y, Z), N, X) -> QSORT1(Y)
F_33(pair2(Y, Z), N, X) -> APPEND2(qsort1(Y), add2(X, qsort1(Z)))
F_14(pair2(X, Z), N, M, Y) -> F_26(lt2(N, M), N, M, Y, X, Z)
F_14(pair2(X, Z), N, M, Y) -> LT2(N, M)
QSORT1(add2(N, X)) -> F_33(split2(N, X), N, X)
LT2(s1(X), s1(Y)) -> LT2(X, Y)
SPLIT2(N, add2(M, Y)) -> F_14(split2(N, Y), N, M, Y)
APPEND2(add2(N, X), Y) -> APPEND2(X, Y)
F_33(pair2(Y, Z), N, X) -> QSORT1(Z)
QSORT1(add2(N, X)) -> SPLIT2(N, X)
SPLIT2(N, add2(M, Y)) -> SPLIT2(N, Y)
lt2(0, s1(X)) -> true
lt2(s1(X), 0) -> false
lt2(s1(X), s1(Y)) -> lt2(X, Y)
append2(nil, Y) -> Y
append2(add2(N, X), Y) -> add2(N, append2(X, Y))
split2(N, nil) -> pair2(nil, nil)
split2(N, add2(M, Y)) -> f_14(split2(N, Y), N, M, Y)
f_14(pair2(X, Z), N, M, Y) -> f_26(lt2(N, M), N, M, Y, X, Z)
f_26(true, N, M, Y, X, Z) -> pair2(X, add2(M, Z))
f_26(false, N, M, Y, X, Z) -> pair2(add2(M, X), Z)
qsort1(nil) -> nil
qsort1(add2(N, X)) -> f_33(split2(N, X), N, X)
f_33(pair2(Y, Z), N, X) -> append2(qsort1(Y), add2(X, qsort1(Z)))
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDP
↳ QDP
APPEND2(add2(N, X), Y) -> APPEND2(X, Y)
lt2(0, s1(X)) -> true
lt2(s1(X), 0) -> false
lt2(s1(X), s1(Y)) -> lt2(X, Y)
append2(nil, Y) -> Y
append2(add2(N, X), Y) -> add2(N, append2(X, Y))
split2(N, nil) -> pair2(nil, nil)
split2(N, add2(M, Y)) -> f_14(split2(N, Y), N, M, Y)
f_14(pair2(X, Z), N, M, Y) -> f_26(lt2(N, M), N, M, Y, X, Z)
f_26(true, N, M, Y, X, Z) -> pair2(X, add2(M, Z))
f_26(false, N, M, Y, X, Z) -> pair2(add2(M, X), Z)
qsort1(nil) -> nil
qsort1(add2(N, X)) -> f_33(split2(N, X), N, X)
f_33(pair2(Y, Z), N, X) -> append2(qsort1(Y), add2(X, qsort1(Z)))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
APPEND2(add2(N, X), Y) -> APPEND2(X, Y)
POL( APPEND2(x1, x2) ) = max{0, x1 - 1}
POL( add2(x1, x2) ) = x2 + 2
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ PisEmptyProof
↳ QDP
↳ QDP
↳ QDP
lt2(0, s1(X)) -> true
lt2(s1(X), 0) -> false
lt2(s1(X), s1(Y)) -> lt2(X, Y)
append2(nil, Y) -> Y
append2(add2(N, X), Y) -> add2(N, append2(X, Y))
split2(N, nil) -> pair2(nil, nil)
split2(N, add2(M, Y)) -> f_14(split2(N, Y), N, M, Y)
f_14(pair2(X, Z), N, M, Y) -> f_26(lt2(N, M), N, M, Y, X, Z)
f_26(true, N, M, Y, X, Z) -> pair2(X, add2(M, Z))
f_26(false, N, M, Y, X, Z) -> pair2(add2(M, X), Z)
qsort1(nil) -> nil
qsort1(add2(N, X)) -> f_33(split2(N, X), N, X)
f_33(pair2(Y, Z), N, X) -> append2(qsort1(Y), add2(X, qsort1(Z)))
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDP
LT2(s1(X), s1(Y)) -> LT2(X, Y)
lt2(0, s1(X)) -> true
lt2(s1(X), 0) -> false
lt2(s1(X), s1(Y)) -> lt2(X, Y)
append2(nil, Y) -> Y
append2(add2(N, X), Y) -> add2(N, append2(X, Y))
split2(N, nil) -> pair2(nil, nil)
split2(N, add2(M, Y)) -> f_14(split2(N, Y), N, M, Y)
f_14(pair2(X, Z), N, M, Y) -> f_26(lt2(N, M), N, M, Y, X, Z)
f_26(true, N, M, Y, X, Z) -> pair2(X, add2(M, Z))
f_26(false, N, M, Y, X, Z) -> pair2(add2(M, X), Z)
qsort1(nil) -> nil
qsort1(add2(N, X)) -> f_33(split2(N, X), N, X)
f_33(pair2(Y, Z), N, X) -> append2(qsort1(Y), add2(X, qsort1(Z)))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
LT2(s1(X), s1(Y)) -> LT2(X, Y)
POL( LT2(x1, x2) ) = max{0, x2 - 1}
POL( s1(x1) ) = x1 + 2
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ PisEmptyProof
↳ QDP
↳ QDP
lt2(0, s1(X)) -> true
lt2(s1(X), 0) -> false
lt2(s1(X), s1(Y)) -> lt2(X, Y)
append2(nil, Y) -> Y
append2(add2(N, X), Y) -> add2(N, append2(X, Y))
split2(N, nil) -> pair2(nil, nil)
split2(N, add2(M, Y)) -> f_14(split2(N, Y), N, M, Y)
f_14(pair2(X, Z), N, M, Y) -> f_26(lt2(N, M), N, M, Y, X, Z)
f_26(true, N, M, Y, X, Z) -> pair2(X, add2(M, Z))
f_26(false, N, M, Y, X, Z) -> pair2(add2(M, X), Z)
qsort1(nil) -> nil
qsort1(add2(N, X)) -> f_33(split2(N, X), N, X)
f_33(pair2(Y, Z), N, X) -> append2(qsort1(Y), add2(X, qsort1(Z)))
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
SPLIT2(N, add2(M, Y)) -> SPLIT2(N, Y)
lt2(0, s1(X)) -> true
lt2(s1(X), 0) -> false
lt2(s1(X), s1(Y)) -> lt2(X, Y)
append2(nil, Y) -> Y
append2(add2(N, X), Y) -> add2(N, append2(X, Y))
split2(N, nil) -> pair2(nil, nil)
split2(N, add2(M, Y)) -> f_14(split2(N, Y), N, M, Y)
f_14(pair2(X, Z), N, M, Y) -> f_26(lt2(N, M), N, M, Y, X, Z)
f_26(true, N, M, Y, X, Z) -> pair2(X, add2(M, Z))
f_26(false, N, M, Y, X, Z) -> pair2(add2(M, X), Z)
qsort1(nil) -> nil
qsort1(add2(N, X)) -> f_33(split2(N, X), N, X)
f_33(pair2(Y, Z), N, X) -> append2(qsort1(Y), add2(X, qsort1(Z)))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
SPLIT2(N, add2(M, Y)) -> SPLIT2(N, Y)
POL( SPLIT2(x1, x2) ) = max{0, x2 - 1}
POL( add2(x1, x2) ) = x2 + 2
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ PisEmptyProof
↳ QDP
lt2(0, s1(X)) -> true
lt2(s1(X), 0) -> false
lt2(s1(X), s1(Y)) -> lt2(X, Y)
append2(nil, Y) -> Y
append2(add2(N, X), Y) -> add2(N, append2(X, Y))
split2(N, nil) -> pair2(nil, nil)
split2(N, add2(M, Y)) -> f_14(split2(N, Y), N, M, Y)
f_14(pair2(X, Z), N, M, Y) -> f_26(lt2(N, M), N, M, Y, X, Z)
f_26(true, N, M, Y, X, Z) -> pair2(X, add2(M, Z))
f_26(false, N, M, Y, X, Z) -> pair2(add2(M, X), Z)
qsort1(nil) -> nil
qsort1(add2(N, X)) -> f_33(split2(N, X), N, X)
f_33(pair2(Y, Z), N, X) -> append2(qsort1(Y), add2(X, qsort1(Z)))
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDPOrderProof
F_33(pair2(Y, Z), N, X) -> QSORT1(Y)
QSORT1(add2(N, X)) -> F_33(split2(N, X), N, X)
F_33(pair2(Y, Z), N, X) -> QSORT1(Z)
lt2(0, s1(X)) -> true
lt2(s1(X), 0) -> false
lt2(s1(X), s1(Y)) -> lt2(X, Y)
append2(nil, Y) -> Y
append2(add2(N, X), Y) -> add2(N, append2(X, Y))
split2(N, nil) -> pair2(nil, nil)
split2(N, add2(M, Y)) -> f_14(split2(N, Y), N, M, Y)
f_14(pair2(X, Z), N, M, Y) -> f_26(lt2(N, M), N, M, Y, X, Z)
f_26(true, N, M, Y, X, Z) -> pair2(X, add2(M, Z))
f_26(false, N, M, Y, X, Z) -> pair2(add2(M, X), Z)
qsort1(nil) -> nil
qsort1(add2(N, X)) -> f_33(split2(N, X), N, X)
f_33(pair2(Y, Z), N, X) -> append2(qsort1(Y), add2(X, qsort1(Z)))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
F_33(pair2(Y, Z), N, X) -> QSORT1(Y)
F_33(pair2(Y, Z), N, X) -> QSORT1(Z)
Used ordering: Polynomial Order [17,21] with Interpretation:
QSORT1(add2(N, X)) -> F_33(split2(N, X), N, X)
POL( F_33(x1, ..., x3) ) = max{0, x1 - 1}
POL( pair2(x1, x2) ) = x1 + x2 + 2
POL( QSORT1(x1) ) = max{0, x1 - 1}
POL( add2(x1, x2) ) = x2 + 2
POL( split2(x1, x2) ) = x2 + 2
POL( f_14(x1, ..., x4) ) = x1 + 2
POL( nil ) = 0
POL( f_26(x1, ..., x6) ) = x1 + x5 + x6 + 2
POL( lt2(x1, x2) ) = 2
POL( true ) = 2
POL( false ) = 2
lt2(s1(X), 0) -> false
f_26(false, N, M, Y, X, Z) -> pair2(add2(M, X), Z)
split2(N, add2(M, Y)) -> f_14(split2(N, Y), N, M, Y)
lt2(0, s1(X)) -> true
lt2(s1(X), s1(Y)) -> lt2(X, Y)
f_26(true, N, M, Y, X, Z) -> pair2(X, add2(M, Z))
f_14(pair2(X, Z), N, M, Y) -> f_26(lt2(N, M), N, M, Y, X, Z)
split2(N, nil) -> pair2(nil, nil)
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ DependencyGraphProof
QSORT1(add2(N, X)) -> F_33(split2(N, X), N, X)
lt2(0, s1(X)) -> true
lt2(s1(X), 0) -> false
lt2(s1(X), s1(Y)) -> lt2(X, Y)
append2(nil, Y) -> Y
append2(add2(N, X), Y) -> add2(N, append2(X, Y))
split2(N, nil) -> pair2(nil, nil)
split2(N, add2(M, Y)) -> f_14(split2(N, Y), N, M, Y)
f_14(pair2(X, Z), N, M, Y) -> f_26(lt2(N, M), N, M, Y, X, Z)
f_26(true, N, M, Y, X, Z) -> pair2(X, add2(M, Z))
f_26(false, N, M, Y, X, Z) -> pair2(add2(M, X), Z)
qsort1(nil) -> nil
qsort1(add2(N, X)) -> f_33(split2(N, X), N, X)
f_33(pair2(Y, Z), N, X) -> append2(qsort1(Y), add2(X, qsort1(Z)))